# colab에서 실행
!pip install folium
Collecting folium Downloading folium-0.12.1-py2.py3-none-any.whl (94 kB) Requirement already satisfied: jinja2>=2.9 in c:\users\kbjoo\anaconda3\lib\site-packages (from folium) (2.11.3) Requirement already satisfied: requests in c:\users\kbjoo\anaconda3\lib\site-packages (from folium) (2.25.1) Requirement already satisfied: numpy in c:\users\kbjoo\anaconda3\lib\site-packages (from folium) (1.20.1) Collecting branca>=0.3.0 Downloading branca-0.4.2-py3-none-any.whl (24 kB) Requirement already satisfied: MarkupSafe>=0.23 in c:\users\kbjoo\anaconda3\lib\site-packages (from jinja2>=2.9->folium) (1.1.1) Requirement already satisfied: idna<3,>=2.5 in c:\users\kbjoo\anaconda3\lib\site-packages (from requests->folium) (2.10) Requirement already satisfied: certifi>=2017.4.17 in c:\users\kbjoo\anaconda3\lib\site-packages (from requests->folium) (2020.12.5) Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\kbjoo\anaconda3\lib\site-packages (from requests->folium) (1.26.4) Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\kbjoo\anaconda3\lib\site-packages (from requests->folium) (4.0.0) Installing collected packages: branca, folium Successfully installed branca-0.4.2 folium-0.12.1
import folium
loc = folium.Map(location=[37.546817, 126.911411])
loc
loc = folium.Map(location=[37.546817, 126.911411], zoom_start=17)
loc
# 롯데 월드 타워 37.512706500791, 127.10257850098388
loc = folium.Map(location=[37.512706500791, 127.10257850098388], zoom_start=15)
loc
folium.Marker([37.512706500791, 127.10257850098388]).add_to(loc)
loc
# map 저장하기
loc.save('lotte_world_tower.html')
loc = folium.Map(location=[37.546817, 126.911411], zoom_start=17)
folium.Marker([37.546817, 126.911411]).add_to(loc) # 양화진 마커
folium.Marker([37.54735133265634, 126.91585875577475]).add_to(loc) # 성산중학교 마커
loc.save('hapjung.html')
loc
# 할리스 37.5484384866216, 126.91329957076081
loc = folium.Map(location=[37.546817, 126.911411], zoom_start=17)
folium.Marker([37.546817, 126.911411]).add_to(loc) # 양화진 마커
folium.Marker([37.54735133265634, 126.91585875577475]).add_to(loc) # 성산중학교 마커
folium.Marker([37.5484384866216, 126.91329957076081]).add_to(loc) # 할리스
loc.save('hapjung.html')
loc
# 3군데 중앙 위치 : 37.54725250519376, 126.9136703088256
loc = folium.Map(location = [37.54725250519376, 126.9136703088256], zoom_start=17)
folium.Marker([37.546817, 126.911411]).add_to(loc) # 양화진 마커
folium.Marker([37.54735133265634, 126.91585875577475]).add_to(loc) # 성산중학교 마커
folium.Marker([37.5484384866216, 126.91329957076081]).add_to(loc) # 할리스
loc.save('hapjung.html')
loc
# 3군데 중앙 위치 : 37.54725250519376, 126.9136703088256
loc = folium.Map(location = [37.54725250519376, 126.9136703088256], zoom_start=17)
folium.Marker([37.546817, 126.911411], popup="양화진").add_to(loc) # 양화진 마커
folium.Marker([37.54735133265634, 126.91585875577475], popup="성산중학교").add_to(loc) # 성산중학교 마커
folium.Marker([37.5484384866216, 126.91329957076081], popup="할리스").add_to(loc) # 할리스
loc.save('hapjung.html')
loc
# 3군데 중앙 위치 : 37.54725250519376, 126.9136703088256
loc = folium.Map(location = [37.54725250519376, 126.9136703088256], zoom_start=17)
folium.Marker([37.546817, 126.911411], popup="양화진", icon=folium.Icon(color="orange", icon='info-sign')).add_to(loc) # 양화진 마커
folium.Marker([37.54735133265634, 126.91585875577475], popup="성산중학교", icon=folium.Icon(color="green")).add_to(loc) # 성산중학교 마커
folium.Marker([37.5484384866216, 126.91329957076081], popup="할리스", icon=folium.Icon(color="black")).add_to(loc) # 할리스
loc.save('hapjung.html')
loc
# 맛집 5군데 위도, 경도
# 1. 영동족발 : 37.48473289758024, 127.03799397322723
# 2. 양재 KFC : 37.48433236493403, 127.03517720809431
# 3. 양재 버거킹 : 37.4841979968814, 127.03377488460991
# 4. 양재 산들해 : 37.48301334017373, 127.03501116926418
# 5. 디오디아 : 37.48253921004342, 127.03555871159138
# 화면 중앙 지정
m = folium.Map(location=[37.483961224952466, 127.0366585566519], zoom_start=17)
# 마커
folium.Marker([37.48473289758024, 127.03799397322723], tooltip="영동족발", icon=folium.Icon(color="orange")).add_to(m) # 1. 영동족발
folium.Marker([37.48433236493403, 127.03517720809431], tooltip="KFC", icon=folium.Icon(color="red")).add_to(m) # 2. 양재 KFC
folium.Marker([37.4841979968814, 127.03377488460991], tooltip="버거킹", icon=folium.Icon(color="black")).add_to(m) # 3. 양재 버거킹
folium.Marker([37.48301334017373, 127.03501116926418], tooltip="산들해", icon=folium.Icon(color="green")).add_to(m) # 4. 양재 산들해
folium.Marker([37.48253921004342, 127.03555871159138], tooltip="디오디아", icon=folium.Icon(color="blue")).add_to(m) # 5. 디오디아
# html 파일로 저장
m.save("yangjae.html")
m
# 추억의 장소 5군데 위도, 경도
# 1. 봉은사 : 37.514919963182656, 127.05722678908606
# 2. 코엑스 : 37.51140596617055, 127.05955018937573
# 3. 개포 고등학교 : 37.48513366202933, 127.05946771900054
# 4. 대청역 마루공원 : 37.496159908868705, 127.08066625390431
# 5. 개포 1단지 아파트 : 37.48063828556736, 127.05821704896938
# 화면 중앙 지정
m2 = folium.Map(location=[37.49893869126749, 127.06777430427968], zoom_start=14)
# 마커
folium.Marker([37.514919963182656, 127.05722678908606], tooltip="봉은사", icon=folium.Icon(color="orange")).add_to(m2) # 1. 봉은사
folium.Marker([37.51140596617055, 127.05955018937573], tooltip="코엑스", icon=folium.Icon(color="red")).add_to(m2) # 2. 코엑스
folium.Marker([37.48513366202933, 127.05946771900054], tooltip="개포고등학교", icon=folium.Icon(color="black")).add_to(m2) # 3. 개포 고등학교
folium.Marker([37.496159908868705, 127.08066625390431], tooltip="마루공원", icon=folium.Icon(color="green")).add_to(m2) # 4. 대청역 마루공원
folium.Marker([37.48063828556736, 127.05821704896938], tooltip="개포 1단지 아파트", icon=folium.Icon(color="blue")).add_to(m2) # 5. 개포 1단지 아파트
# html 파일로 저장
m2.save("at_highschool.html")
m2
import pandas as pd
dat = pd.read_csv("seoul_public_toilet.csv", engine="python", encoding="EUCKR")
dat
| POI ID | 대명칭 | 중명칭 | 소명칭 | 중앙좌표X1 | 중앙좌표Y1 | WSG84X좌표 | WSG84Y좌표 | 등록일자 | 수정일자 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 102423 | 우성스포츠센터 | 민간개방화장실 | NaN | 192026.077328 | 443662.903901 | 126.909832 | 37.492386 | 20100712 | 20100712 |
| 1 | 102424 | 프레곤빌딩 | 민간개방화장실 | NaN | 191560.448911 | 442968.699196 | 126.904575 | 37.486127 | 20100712 | 20100712 |
| 2 | 102425 | 하림빌딩 | 민간개방화장실 | NaN | 201472.042745 | 443869.796509 | 127.016646 | 37.494283 | 20100712 | 20100712 |
| 3 | 102426 | 크레신타워 | 민간개방화장실 | NaN | 201633.540441 | 446523.716576 | 127.018478 | 37.518195 | 20100712 | 20100712 |
| 4 | 102483 | 한주실업빌딩 | 민간개방화장실 | NaN | 195045.520979 | 446004.024095 | 126.943960 | 37.513501 | 20100712 | 20100712 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 4933 | A10008 | 전국모범운전자연합양천지회 | 민간개방화장실 | NaN | 188119.607000 | 445886.552000 | 126.865623 | 37.512379 | 20110506 | 20110506 |
| 4934 | A10009 | 세림빌딩 | 민간개방화장실 | NaN | 187717.295000 | 446300.534000 | 126.861066 | 37.516104 | 20110506 | 20110506 |
| 4935 | A10010 | 신목동주유소 | 민간개방화장실 | NaN | 188601.435000 | 446685.734000 | 126.871060 | 37.519586 | 20110506 | 20110506 |
| 4936 | A10011 | 등원주유소 | 민간개방화장실 | NaN | 188913.820000 | 448906.293000 | 126.874561 | 37.539597 | 20110506 | 20110506 |
| 4937 | A10012 | 신양천주유소 | 민간개방화장실 | NaN | 187929.411000 | 446269.665000 | 126.863465 | 37.515829 | 20110506 | 20110506 |
4938 rows × 10 columns
# 100개만 가져오기(실행 속도 때문)
dat_tmp = dat.loc[:99,["대명칭", "WSG84X좌표", "WSG84Y좌표"]]
dat_tmp
| 대명칭 | WSG84X좌표 | WSG84Y좌표 | |
|---|---|---|---|
| 0 | 우성스포츠센터 | 126.909832 | 37.492386 |
| 1 | 프레곤빌딩 | 126.904575 | 37.486127 |
| 2 | 하림빌딩 | 127.016646 | 37.494283 |
| 3 | 크레신타워 | 127.018478 | 37.518195 |
| 4 | 한주실업빌딩 | 126.943960 | 37.513501 |
| ... | ... | ... | ... |
| 95 | 은혜교회 | 126.854925 | 37.506932 |
| 96 | 성신고려의원 | 126.894133 | 37.466728 |
| 97 | 공릉동공중화장실 | 127.086965 | 37.620877 |
| 98 | 벽운공중화장실 | 127.057218 | 37.680326 |
| 99 | 동북쇼핑개방화장실 | 127.018747 | 37.620203 |
100 rows × 3 columns
# column명 바꾸기
dat_tmp.columns = ["name", "위도", "경도"]
dat_tmp
| name | 위도 | 경도 | |
|---|---|---|---|
| 0 | 우성스포츠센터 | 126.909832 | 37.492386 |
| 1 | 프레곤빌딩 | 126.904575 | 37.486127 |
| 2 | 하림빌딩 | 127.016646 | 37.494283 |
| 3 | 크레신타워 | 127.018478 | 37.518195 |
| 4 | 한주실업빌딩 | 126.943960 | 37.513501 |
| ... | ... | ... | ... |
| 95 | 은혜교회 | 126.854925 | 37.506932 |
| 96 | 성신고려의원 | 126.894133 | 37.466728 |
| 97 | 공릉동공중화장실 | 127.086965 | 37.620877 |
| 98 | 벽운공중화장실 | 127.057218 | 37.680326 |
| 99 | 동북쇼핑개방화장실 | 127.018747 | 37.620203 |
100 rows × 3 columns
### 서울시 선택
m = folium.Map(location=[37.5447, 126.9828], zoom_start = 10)
m
dat_tmp.shape
(100, 3)
dat_tmp.head()
| name | 위도 | 경도 | |
|---|---|---|---|
| 0 | 우성스포츠센터 | 126.909832 | 37.492386 |
| 1 | 프레곤빌딩 | 126.904575 | 37.486127 |
| 2 | 하림빌딩 | 127.016646 | 37.494283 |
| 3 | 크레신타워 | 127.018478 | 37.518195 |
| 4 | 한주실업빌딩 | 126.943960 | 37.513501 |
des = dat_tmp['name']
dat_p1 = list(dat_tmp["경도"])
dat_p2 = list(dat_tmp["위도"])
dat_xy = list(zip(dat_p1, dat_p2))
dat_xy[0:3]
[(37.49238614627172, 126.90983237468618), (37.48612718078578, 126.90457509912622), (37.49428349959237, 127.01664600669828)]
m = folium.Map(location=[37.492386,126.909832], zoom_start=13)
for name, loc in zip(des, dat_xy):
folium.Marker(location=loc, tooltip=name, icon=folium.Icon(color='blue', icon='info-sign')).add_to(m)
m.save("seoul_toilet_100.html")
m
dat_tmp2 = dat.loc[:, ["대명칭", "WSG84X좌표", "WSG84Y좌표"]]
dat_tmp2
| 대명칭 | WSG84X좌표 | WSG84Y좌표 | |
|---|---|---|---|
| 0 | 우성스포츠센터 | 126.909832 | 37.492386 |
| 1 | 프레곤빌딩 | 126.904575 | 37.486127 |
| 2 | 하림빌딩 | 127.016646 | 37.494283 |
| 3 | 크레신타워 | 127.018478 | 37.518195 |
| 4 | 한주실업빌딩 | 126.943960 | 37.513501 |
| ... | ... | ... | ... |
| 4933 | 전국모범운전자연합양천지회 | 126.865623 | 37.512379 |
| 4934 | 세림빌딩 | 126.861066 | 37.516104 |
| 4935 | 신목동주유소 | 126.871060 | 37.519586 |
| 4936 | 등원주유소 | 126.874561 | 37.539597 |
| 4937 | 신양천주유소 | 126.863465 | 37.515829 |
4938 rows × 3 columns
dat_tmp2.columns = ["name", "경도", "위도"]
dat_tmp2.head()
| name | 경도 | 위도 | |
|---|---|---|---|
| 0 | 우성스포츠센터 | 126.909832 | 37.492386 |
| 1 | 프레곤빌딩 | 126.904575 | 37.486127 |
| 2 | 하림빌딩 | 127.016646 | 37.494283 |
| 3 | 크레신타워 | 127.018478 | 37.518195 |
| 4 | 한주실업빌딩 | 126.943960 | 37.513501 |
des = dat_tmp2['name']
dat_x = dat_tmp2['위도']
dat_y = dat_tmp2['경도']
dat_xy = list(zip(dat_x, dat_y))
print(len(dat_xy))
dat_xy[0:3]
4938
[(37.49238614627172, 126.90983237468618), (37.48612718078578, 126.90457509912622), (37.49428349959237, 127.01664600669828)]
import time
now = time.time()
m2 = folium.Map(location=[37.492386,126.909832], zoom_start=13)
for name, loc in zip(des, dat_xy):
folium.Marker(location = loc, tooltip = name, icon = folium.Icon(color="orange", icon = "info-sign")).add_to(m2)
work_time = time.time() - now
m2.save("seoul_toilet_4938.html")
print( work_time )
m2
0.31740665435791016
# 서울시 공공자전거 대여소(2021.6) : public_bike_rent_place.csv
import pandas as pd
import folium
dat = pd.read_csv("public_bike_rent_place.csv", engine = "python", encoding='cp949')
dat
| 대여소\n번호 | 보관소(대여소)명 | 소재지(위치) | Unnamed: 3 | Unnamed: 4 | Unnamed: 5 | 설치\n시기 | 설치형태 | Unnamed: 8 | 운영\n방식 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | LCD | QR | NaN |
| 1 | NaN | NaN | 자치구 | 상세주소 | 위도 | 경도 | NaN | NaN | NaN | NaN |
| 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 거치\n대수 | 거치\n대수 | NaN |
| 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4 | 102.0 | 망원역 1번출구 앞 | 마포구 | 서울특별시 마포구 월드컵로 72 | 37.5556488 | 126.9106293 | 2015-09-06 | 20 | NaN | LCD |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2466 | 4864.0 | 송파사거리 | 송파구 | 송파구 송파동 97-2 | 37.50205612 | 127.1105499 | 2021-04-27 | NaN | 6 | QR |
| 2467 | 4865.0 | 한성백제역 1번출구 뒤 | 송파구 | 송파구 방이동 45-4 | 37.51634216 | 127.115593 | 2021-04-28 | NaN | 5 | QR |
| 2468 | 4867.0 | 가락대림아파트 앞 | 송파구 | 송파구 가락동 94-9 | 37.5000267 | 127.1184311 | 2021-04-28 | NaN | 10 | QR |
| 2469 | 4868.0 | 레이크 호텔 앞 | 송파구 | 송파구 석촌동 158 | 37.50717163 | 127.1012421 | 2021-05-18 | NaN | 7 | QR |
| 2470 | 4869.0 | 잠실나들목6 | 송파구 | 잠실동 24 | 37.51629639 | 127.08461 | 2021-06-21 | NaN | 9 | QR |
2471 rows × 10 columns
dat.columns
Index(['대여소\n번호', '보관소(대여소)명', '소재지(위치)', 'Unnamed: 3', 'Unnamed: 4',
'Unnamed: 5', '설치\n시기', '설치형태', 'Unnamed: 8', '운영\n방식'],
dtype='object')
dat_tmp = dat.loc[4:103,["보관소(대여소)명", "Unnamed: 4", "Unnamed: 5" ]]
dat_tmp.head()
| 보관소(대여소)명 | Unnamed: 4 | Unnamed: 5 | |
|---|---|---|---|
| 4 | 망원역 1번출구 앞 | 37.5556488 | 126.9106293 |
| 5 | 망원역 2번출구 앞 | 37.55495071 | 126.9108353 |
| 6 | 합정역 1번출구 앞 | 37.55062866 | 126.9149857 |
| 7 | 합정역 5번출구 앞 | 37.55000687 | 126.9148254 |
| 8 | 합정역 7번출구 앞 | 37.54864502 | 126.9128265 |
dat_tmp.columns = ["보관소", "위도", "경도"]
dat_tmp
| 보관소 | 위도 | 경도 | |
|---|---|---|---|
| 4 | 망원역 1번출구 앞 | 37.5556488 | 126.9106293 |
| 5 | 망원역 2번출구 앞 | 37.55495071 | 126.9108353 |
| 6 | 합정역 1번출구 앞 | 37.55062866 | 126.9149857 |
| 7 | 합정역 5번출구 앞 | 37.55000687 | 126.9148254 |
| 8 | 합정역 7번출구 앞 | 37.54864502 | 126.9128265 |
| ... | ... | ... | ... |
| 99 | 여의도역 4번출구 옆 | 37.52222824 | 126.9246368 |
| 100 | 여의도역 1번출구 옆 | 37.5213623 | 126.9234619 |
| 101 | KT앞 | 37.52190781 | 126.9189529 |
| 102 | 금융감독원 앞 | 37.5230217 | 126.9208374 |
| 103 | 여의도고교 앞 | 37.52483749 | 126.934906 |
100 rows × 3 columns
a = dat_tmp["위도"]
list(a)[0:3]
# 각 원소가 문자열이라 숫자형으로 변환 해야 함.
['37.5556488', '37.55495071', '37.55062866']
x_list = []
for i in range(len(dat_tmp["위도"])):
tmp = dat_tmp.iloc[i,1]
x_list.append(float(tmp))
# x_list
y_list = []
for i in range(len(dat_tmp["경도"])):
tmp = dat_tmp.iloc[i,2]
y_list.append(float(tmp))
# y_list
dat_place = dat_tmp["보관소"]
dat_xy = list(zip(x_list, y_list))
print(len(dat_xy))
dat_xy[:3]
100
[(37.5556488, 126.9106293), (37.55495071, 126.9108353), (37.55062866, 126.9149857)]
m = folium.Map(location=[37.55364279403571, 126.93395213023439], zoom_start=12)
for name, loc in zip(dat_place, dat_xy):
folium.Marker(location = loc, tooltip = name, icon = folium.Icon(color="green")).add_to(m)
m.save("seoul_public_bike_rent_map.html")
m
import pandas as pd
import folium
dat = pd.read_csv("public_bike_rent_place.csv", engine = "python", encoding='cp949')
dat.shape
(2471, 10)
dat_tmp = dat.loc[4:503,["보관소(대여소)명", "Unnamed: 4", "Unnamed: 5" ]]
dat_tmp.columns = ["보관소", "위도", "경도"]
# 위도, 경도 값을 숫자로 바꾸기
# 위도
x_list = []
for i in range(len(dat_tmp["위도"])):
tmp = dat_tmp.iloc[i,1]
x_list.append(float(tmp))
# 경도
y_list = []
for i in range(len(dat_tmp["경도"])):
tmp = dat_tmp.iloc[i,2]
y_list.append(float(tmp))
dat_place = dat_tmp["보관소"]
dat_xy = list(zip(x_list, y_list))
m = folium.Map(location=[37.532608700032746, 126.97767418153272], zoom_start=12)
for name, loc in zip(dat_place, dat_xy):
folium.Marker(location = loc, tooltip = name, icon = folium.Icon(color="green")).add_to(m)
m.save("seoul_public_bike_rent_map_500.html")
m